1. Field of the Invention
The present invention relates to an FEC transmission processing apparatus, a FEC transmission method and a program recording medium.
2. Related Art
RTP (Real-time Transport Protocol) is a communication protocol capable of transfer additional information such as sequence and processing timing together on a data packet being delivered. When the receiving side executes reception processing based on the additional information, the received data packet (media packet) thereby reproduces the same condition as that at the time of transmission regardless of influences of disturbance received during delivery. However, while RTP can recover changes in the sequence and variations in received intervals, RTP can only detect but not recover losses.
In real-time streaming of video, speech or the like, data loss may cause reproduction quality of video or speech to degrade, and therefore it is preferable to take appropriate recovery measures. Examples of such general techniques include one using retransmission and one using error-correcting codes.
One of the simplest recovery measures is a technique of requesting retransmission when packet loss occurs, but the use of the technique is not always appropriate in real-time streaming communication. Causes of this include that keeping constant data delivery for the application layer requires data before and after retransmission data to be retained until the retransmission data is received, and a large delay is produced when the propagation time is long, or that reliable reception of even retransmission data may not be guaranteed in a channel where losses occur. Furthermore, when feedback is not possible on the receiving side in the case of one-directional communication such as broadcasting type delivery, retransmission cannot be requested in the first place.
On the other hand, a technique using error-correcting codes is available and a recovery measure using FEC (Forward Error Correction) coded communication is known as a practical technique. FEC groups original data (calculation unit), carries out calculations using a predetermined technique, generates redundant data for each group, stores the redundant data in FEC packet and transmits the FEC packets in parallel with the original data. When part of the original data is lost in each group, the receiving side carries out calculations from the redundant data corresponding to the rest of the original data using a predetermined technique and can thereby recover the lost original data. In this case, since the redundant data and original data are transmitted with very short or substantially no delay, the receiving side can immediately recover the data and delays caused by the processing become smaller than those for retransmission.
Conventionally, one of general FEC schemes applicable to RTP is a scheme defined in RFC2733. Furthermore, there is a scheme defined by the Pro-MPEG forum whereby this scheme is improved for video streaming communication (“Pro-MPEG Code of Practice #3 release 2”, Pro-MPEG Forum, July 2004). This scheme is intended to improve the recovery performance against a plurality of consecutive losses taking into consideration a phenomenon that even a degree of disturbance that produces at most one loss at low rate when the rate is high may produce a plurality of consecutive losses. More specifically, a plurality of data packets are arranged on a matrix, the data packets are then grouped for each columns & rows, subjected to FEC coding and FEC packets are thereby generated from each group. In this case, each row and each column become one group (calculation unit) of FEC, and therefore consecutive losses over a certain one horizontal row can be processed as at most one loss in each of a plurality of longitudinal column groups.
Here, the FEC scheme of Pro-MPEG defines transmission of a plurality of FEC packets for a coding block (matrix) as packets to be transmitted within a range in which the next matrix is transmitted. That is, the receiving side requires a delay and wait corresponding to one matrix until an FEC packet is received, but this delay time is extremely small when the rate is high and is insignificant compared to other schemes. Furthermore, it can be expected to avoid the two packets (both fec packet and corresponding data packet) from simultaneously being lost due to disturbance during delivery because of a transmission difference between the data packet and FEC packet and there are great advantages such that coding can be realized during transmission without retention of any data packet, thus preventing delays and the transmission rate of FEC packets can be easily smoothed to a constant value. If the FEC packet transmission range is not preserved, the transmission rate of the FEC packet may increase more than expected even temporarily, causing problems in transmission on a network which is restricted with bandwidth reservations. In this case, FEC packets exceeding the reserved bandwidth are discarded or the rate thereof is forcibly reduced, which produces problems such as a delay that occurs as a whole, preventing the reception apparatus from carrying out FEC coding processing normally.
In this way, though it can be said to be a reasonable FEC packet transmission rule from an overall standpoint, the Pro-MPEG FEC scheme is only targeted at streams at a constant rate (CBR: Constant Bit Rate) and not targeted at streams at a variable rate (VBR). Therefore, there has been no FEC scheme that would satisfy the FEC packet transmission range and its transmission rate restriction simultaneously and efficiently form a matrix in streams at a variable rate (VBR: Variable Bit Rate).